import { Callout } from "nextra-theme-docs";

# Platform Proxy

GZCTF comes with built-in WebSocket-TCP forwarding functionality and corresponding traffic logging capability, which can be enabled through relevant configuration options.

## Configuration

In `appsettings.json`, locate the `ContainerProvider` section and configure it as follows:

```json
{
  "ContainerProvider": {
    "PortMappingType": "PlatformProxy",
    "EnableTrafficCapture": false
  }
}
```

## Usage

After enabling the platform proxy, you can use the `/api/proxy/{guid}` endpoint of the platform to forward TCP over WebSocket traffic.

You can connect using any applications that support this function, or use the recommended client: [WebSocketReflectorX](https://github.com/XDSEC/WebSocketReflectorX) for local port forwarding and seamless interaction.

## Notes

When using Docker as the backend and using the PlatformProxy port mapping configuration, in order to ensure smooth access to the challenge container in GZCTF, you need to manually create an additional network.

```bash
docker network create challenges -d bridge --subnet 192.168.133.0/24
```

Set the configuration item **ChallengeNetwork** to the corresponding network name, and bridge the external network in the `compose.yml` file, for example:

```yaml
services:
  gzctf:
    ...
    networks:
    - default
    - challenges

networks:
  challenges:
    external: true
```
